using System;
using System.Collections.Generic;
using System.Text;

namespace Googleboys.Inventa.Concept
{
    public class Reservierung
    {
        private DateTime _ReserviertSeit;
        private Person _ReservierendePerson;
        private Gegenstand _ReservierterGegenstand;

        private Guid _pkID;

        public Reservierung(Person wer, Gegenstand was, DateTime wann)
        {
            _ReservierendePerson = wer;
            _ReservierterGegenstand = was;
            _ReserviertSeit = wann;

        	_pkID = Guid.NewGuid();
        }

    	public String ReservierendePersonName
    	{
    		get
    		{
    			if (_ReservierendePerson != null)
    			{
    				return _ReservierendePerson.Name + ", " + _ReservierendePerson.Vorname;
    			}

    			return String.Empty;
    		}
    	}

        public Person ReservierendePerson
        {
            get
            {
                return _ReservierendePerson;
            }
            set
            {
                _ReservierendePerson = value;
            }
        }

        public Gegenstand ReservierterGegenstand
        {
            get
            {
                return _ReservierterGegenstand;
            }
            set
            {
                _ReservierterGegenstand = value;
            }
        }

    	public GegenstandTyp ReservierterGegenstandArt
    	{
    		get
    		{
    			if (_ReservierterGegenstand is Software)
    				return GegenstandTyp.Software;
    			else if (_ReservierterGegenstand is Hardware)
					return GegenstandTyp.Hardware;
				else if (_ReservierterGegenstand is Mobiliar)
					return GegenstandTyp.Mobiliar;
				else if (_ReservierterGegenstand is Buch)
					return GegenstandTyp.Buch;

				// Wird sowieso nie erreicht da ein Typ matchen muss
    			return GegenstandTyp.Software;
    		}
    	}

    	public String ReservierterGegenstandBezeichnung
    	{
    		get
    		{
    			return _ReservierterGegenstand.Bezeichnung;
    		}
    	}

		public Guid ReservierterGegenstandPkID
		{
			get
			{
				return _ReservierterGegenstand.PkID;
			}
		}

        public DateTime ReserviertSeit
        {
            get
            {
                return _ReserviertSeit;
            }
            set
            {
                _ReserviertSeit = value;
            }
        }

        public Guid PkID
        {
            get { return _pkID; }
            set { _pkID = value; }
        }
    }
}
